package com.briup.pts.config.web;

import com.briup.pts.web.interceptor.AuthInterceptor;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

// 在类上添加@Configuration表明这个类是Spring框架的配置类
@Configuration
@RequiredArgsConstructor
public class SpringWebConfig implements WebMvcConfigurer {

    private final AuthInterceptor authInterceptor;

    // 注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 配置拦截器，即设置哪些请求需要被拦截
        registry.addInterceptor(authInterceptor)
                // 表示所有的请求都需要被拦截
                .addPathPatterns("/**")
                .excludePathPatterns("/login",
                        // 扫码溯源操作无需进行登录校验
                        "/source/**");
    }

    /**
     * 配置CORS，支持跨域请求
     * @param registry 注册对象
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 本服务器下的所有资源都支持跨域请求，即所有资源都能够被跨域访问
        registry.addMapping("/**")
                // 允许所有的ip网站都可以跨域请求本服务器
                .allowedOrigins("*")
                .allowedMethods("*")
                .allowedHeaders("*");
    }
}
